import json

import requests
import re
import openpyxl

"""
获取12306所有车站信息，并保存到Excel中
"""


def get_station():
    # 所有车站信息
    url = "https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9303"

    # 头信息
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
    }
    # 发送get请示
    reps = requests.get(url=url, headers=header)

    # 设置编码格式
    reps.encoding = "utf-8"

    # 通过正则表达式获得车站名和对应的代码，得到的是一个List
    stations = re.findall("([\u4e00-\u9fa5]+)\\|([A-Z]+)", reps.text)

    return stations


def save(lst):
    print(list)
    # 创建工作簿对象
    wb = openpyxl.Workbook()
    # 使用活动表
    work_sheet = wb.active
    # print(type(work_sheet))
    dict_data = {}
    for item in lst:
        dict_data[item[0]] = item[1]
        work_sheet.append(item)  # 每执行一次，向Excel中写入一行数据

    # 保存车站信息到Excel中
    wb.save("车站代码.xlsx")
    # 将字典写入 JSON 文件
    with open('station.json', 'w', encoding='UTF-8') as json_file:
        json.dump(dict_data, json_file, indent=4,ensure_ascii=False)


if __name__ == '__main__':
    lst = get_station()
    save(lst)
    print("获得车站信息成功.")
